-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
5단계 - 자동차 경주(리팩토링) #5184
Open
sudo-init
wants to merge
30
commits into
next-step:sudo-init
Choose a base branch
from
sudo-init:step5
base: sudo-init
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
5단계 - 자동차 경주(리팩토링) #5184
+71
−80
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
자동차의 최초 위치 수정. 랜덤값이 4이상일 때, 1만큼만 이동하도록 수정. STARTING_PORING -> START_POINT 로 오타 수정. 패키지 mvc패턴으로 정리. list<Car> 대신 Cars 클래스 추가 및 반환값으로 변경.
자동차의 이름 문자열을 입력으로 받아, 문자열을 분리 후에 자동차의 이름 개수 만큼 자동차를 생성
자동차 경주에 대한 Input 데이터를 관리하는 객체 정의. 해당 객체에서 자동차 이름과 시도 횟수를 입력 받음. 또한, 자동차 이름이 5자리를 넘어가면 다시 입력하게 함. test는 입력한 자동차의 이름 수대로 차량을 생성하는지 확인하는 테스트 추가. RaceInfo 클래스를 정의하여, 입력에 대한 데이터들을 캡슐화.
자동차 이름이 5자가 넘으면 예외가 발생하도록 변경
RaceResult 클래스에서 하던 일들을 Cars와 Winners 클래스에서 하도록 변경 후에 RaceResult 클래스 삭제
자동차의 이름과 위치에 관한 클래스 Name, Location를 생성. RacingRegister에서 하던 이름에 대한 검사 기능을 Name으로 이전. 자동차 이동에 관한 carMovingDistance를 삭제. CarMovingDistance에 있던 기능들을 Location 클래스로 이전하면서 추상화. 자동차 이동에 대한 Test 삭제.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
이름을 관리하는 name 클래스와 위치를 관리하는 location 클래스를 생성하니,
확실히 기존에 있던 여러 함수들이 단축되면서 명확해지고, 매개변수들도 깔끔해진 것 같습니다 ^^b.
추상화가 더 잘되는 것 같은데 맞는 걸까요?
근데 추상화가 되니, 자동차 이동에 관한 테스트가 어렵습니다.
테스트 코드 때문에 프로덕트의 코드를 변경하는 것이 바람직하진 않은 것 같은데 이럴 땐 어떻게 하는 것이 좋을까요?
원래는 move() 함수에 값을 줘서 이동할지 안 할지를 정했었는데, 지금은 Location 클래스 내부에서 로직이 돌아가게끔 만들어서 따로 값을 줘서 테스트하기는 어렵습니다.
어떤 것이 좋은 설계일까요?
테스트를 위해서 move() 함수에 매개변수를 정의해서 인자를 넘겨주는 것이 좋을지,
추상화를 위해 move() 함수에 어떤 인자도 주지 않고, 내부에서 돌아가게끔 하는 것이 좋을지 궁금합니다.